package com.christina.engine.service.executor;

import com.christina.engine.execution.model.ExecutionRequest;
import com.christina.engine.execution.model.ExecutionResult;

/**
 * 服务执行器接口
 * 定义服务执行的基本契约
 * 
 * @author Christina
 */
public interface ServiceExecutor {
    
    /**
     * 执行服务请求
     * 
     * @param request 执行请求
     * @return 执行结果
     */
    ExecutionResult execute(ExecutionRequest request);
    
    /**
     * 获取支持的服务类型
     * 
     * @return 服务类型
     */
    String getSupportedServiceType();
    
    /**
     * 检查是否支持指定的服务类型
     * 
     * @param serviceType 服务类型
     * @return 是否支持
     */
    boolean supports(String serviceType);
    
    /**
     * 获取执行器名称
     * 
     * @return 执行器名称
     */
    String getName();
    
    /**
     * 检查执行器是否可用
     * 
     * @return 是否可用
     */
    boolean isAvailable();
}